#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void menu()
{
	printf("\t*************************************\n");
	printf("\t*****         ~猜数字小游戏~     ****\n");
	printf("\t*****       Welcome to play!     ****\n");
	printf("\t*****   输入一个1~100之间的数字  ****\n");
	printf("\t*****   看看你多少次能猜对?(QAQ) ****\n");
	printf("\t*****   你有10次机会猜这个数字   ****\n");
	printf("\t*************************************\n");
}

int main()
{
	srand((int)time(NULL));
	char reply = 'Y';
	while (reply == 'Y' || reply == 'y')
	{
		system("cls");
		int Random = rand() % 100 + 1;
		menu();
		printf("开始玩游戏?(Y/N)->");
		scanf("%c", &reply);
		getchar();
		if (reply == 'N' || reply == 'n')
			break;
		int counter = 0;
		int GuessNumber = 101;
		while (GuessNumber != Random && counter <= 10)
		{
			printf("请输入一个数字:->");
			counter++;
			scanf("%d", &GuessNumber);
			getchar();
			if (GuessNumber > Random)
				printf("猜大了噢，请再猜猜，你还有%d次机会\n", 10 - counter);
			else if (GuessNumber < Random)
				printf("猜小了噢，请再猜猜，你还有%d次机会\n", 10 - counter);
			else
			{
				printf("\t$$$$ 恭喜你猜对啦 $$$$\n");
				printf("\t$$$$奖励你再玩一次$$$$\n");
			}
		}
		printf("想再玩一次吗?(Y/N)->");
		scanf("%c", &reply);
		getchar();
	}
	printf("\t******   游戏退出！ ******\n");
	return 0;
}

// 给6岁以下的小朋友，设计和实现一个练习10以内加减乘除”的小游戏，可以计算小朋友的得分。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
void menu() // 输出游戏菜单
{
	printf("\t*************************************\n");
	printf("\t*****       ~加减乘除小游戏~     ****\n");
	printf("\t*****          欢迎游玩!         ****\n");
	printf("\t*****      看看你能得多少分?     ****\n");
	printf("\t*****      总分100，每题10分     ****\n");
	printf("\t*************************************\n");
}

int game(int R1, int R2, int R3, int *pa) // 游戏内容,R1是运算符左边的数，R2是右边的数，R3用于控制运算符，pa用于获取小朋友的答案
{
	int ret = 0;
	if (R2 != 0 && (R1 % R2 == 0)) // 减法对两个数要求较高，单独控制（被除数小于零，被除数是除数的整数倍）
	{
		printf("请计算%d ÷ %d\n", R1, R2);
		ret = R1 / R2;
		goto l1; // 跳过switch语句
	}
	switch (R3)
	{
	case 1: // 加法
		printf("请计算%d + %d\n", R1, R2);
		ret = R1 + R2;
		break;
	case 2:								   // 减法
		printf("请计算%d - %d\n", R1, R2); // 结果要非负
		ret = R1 - R2;
		break;
	case 3: // 乘法
		printf("请计算%d x %d\n", R1, R2);
		ret = R1 * R2;
		break;
	default:
		break;
	}
l1:
	printf("输入结果:->");
	scanf(" %d", pa);
	return ret; // 返回该题正确答案
}

int main()
{
	srand((int)time(NULL));
	char reply = 'Y';
	while (reply == 'Y' || reply == 'y')
	{
		menu();
		printf("开始玩游戏?\n");
		printf("输入Y进入游戏\n");
		printf("输入N退出游戏\n");
		printf("请输入->");
		scanf(" %c", &reply);
		if (reply == 'N' || reply == 'n')
			break;
		system("cls");
		int target = 0;
		printf("请输入你的目标分数:->");
		scanf(" %d", &target);
		int answer = -1;
		int *pa = &answer;
		int count = 0;
		int score = 0;
		while (count < 10) // 控制题目数，每次游戏总共十题
		{
			int Random1 = rand() % 11;	   // 0~10的随机数，左数
			Sleep(1000);				   // 暂停一小会，使时间相关随机数发生变化
			int Random2 = rand() % 11;	   // 0~10的随机数，右数
			int Random3 = Random1 % 3 + 1; // 控制运算符
			if (Random1 < Random2)		   // 使Random1>Random2，防止减法出现负数 或者 除法出现被除数小于除数
			{
				int t = Random1;
				Random1 = Random2;
				Random2 = t;
			}
			count++;
			int Ret = game(Random1, Random2, Random3, pa); // Ret接收该题正确答案
			if (answer == Ret)
			{
				score += 10;
				printf("恭喜你，答对了，小朋友真厉害！\n");
			}
			else
			{
				printf("真可惜，答错了，小朋友不要灰心哟！\n");
			}
		}
		printf("答题结束！即将展示总成绩！");
		Sleep(1000);
		system("cls");
		if (score >= target)
			printf("总分为:%d分，小朋友真厉害！\n", score);
		else
			printf("总分为:%d分，小朋友不要灰心哟！\n", score);
	}
	printf("游戏退出，欢迎下次游玩哟！\n");
	return 0;
}
